home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / nav_version.nasl < prev    next >
Text File  |  2005-01-14  |  4KB  |  138 lines

  1. #
  2. # (C) Tenable Network Security
  3. #
  4.  
  5. if(description)
  6. {
  7.  script_id(14835);
  8.  script_version("$Revision: 1.2 $");
  9.  
  10.  name["english"] = "Symantec Norton AntiVirus Version Detection";
  11.  
  12.  script_name(english:name["english"]);
  13.  
  14.  desc["english"] = "
  15. This script determines the version of the remote Norton AntiVirus as
  16. written in the registry of the remote host.
  17.  
  18. Risk Factor : None";
  19.  
  20.  
  21.  script_description(english:desc["english"]);
  22.  
  23.  summary["english"] = "Determines the version of the remote NAV";
  24.  
  25.  script_summary(english:summary["english"]);
  26.  
  27.  script_category(ACT_GATHER_INFO);
  28.  
  29.  script_copyright(english:"This script is Copyright (C) 2004 Tenable Network Security");
  30.  family["english"] = "Windows";
  31.  script_family(english:family["english"]);
  32.  
  33.  script_dependencies("smb_hotfixes.nasl");
  34.  script_require_keys("SMB/registry_access");
  35.  
  36.  script_require_ports(139, 445);
  37.  exit(0);
  38. }
  39.  
  40. if ( get_kb_item("SMB/samba") ) exit(0);
  41. include("smb_nt.inc");
  42.  
  43.  
  44.  
  45. x_name = kb_smb_name();
  46. if(!x_name)exit(0);
  47.  
  48. _smb_port = kb_smb_transport();
  49. if(!_smb_port)exit(0);
  50.  
  51. if(!get_port_state(_smb_port)) exit(0);
  52. login = kb_smb_login();
  53. pass  = kb_smb_password();
  54. domain = kb_smb_domain();
  55.  
  56. if(!login)login = "";
  57. if(!pass) pass = "";
  58.  
  59.       
  60. soc = open_sock_tcp(_smb_port);
  61. if(!soc) exit(0);
  62.  
  63. #
  64. # Request the session
  65. r = smb_session_request(soc:soc,  remote:x_name);
  66. if(!r) { close(soc); exit(0); }
  67.  
  68. #
  69. # Negociate the protocol
  70. #
  71. prot = smb_neg_prot(soc:soc);
  72. if(!prot){ close(soc); exit(0); }
  73.  
  74.  
  75. r = smb_session_setup(soc:soc, login:login, password:pass, domain:domain, prot:prot);
  76. if(!r){ close(soc); exit(0); }
  77. uid = session_extract_uid(reply:r);
  78.  
  79. r = smb_tconx(soc:soc, name:x_name, uid:uid, share:"IPC$");
  80. tid = tconx_extract_tid(reply:r);
  81. if(!tid){ close(soc); exit(0); }
  82.  
  83.  
  84. r = smbntcreatex(soc:soc, uid:uid, tid:tid, name:"\winreg");
  85. if(!r){ close(soc); exit(0);}
  86. pipe = smbntcreatex_extract_pipe(reply:r);
  87.  
  88.  
  89. # Corporate Edition
  90. key = "SOFTWARE\Symantec\Symantec AntiVirus\Install";
  91. r = pipe_accessible_registry(soc:soc, uid:uid, tid:tid, pipe:pipe);
  92. if(!r){ close(soc); exit(0); }
  93. handle = registry_open_hklm(soc:soc, uid:uid, tid:tid, pipe:pipe);
  94.  
  95. key_h = registry_get_key(soc:soc, uid:uid, tid:tid, pipe:pipe, key:key, reply:handle);
  96. if(key_h)
  97.  {
  98.   entries = registry_enum_key(soc:soc, uid:uid, tid:tid, pipe:pipe, reply:key_h);
  99.   registry_close(soc:soc, uid:uid, tid:tid, pipe:pipe, reply:key_h);
  100. # Try to find the newest entry
  101.  
  102. i_maj_max = 0;
  103. i_min_max = 0;
  104.  
  105.  foreach version (entries)
  106.  {
  107.   v = split(version, sep:".", keep:0);
  108.   if ( int(v[0]) >= i_maj_max )
  109.   {
  110.     if ( i_maj_max != int(v[0]) ) i_min_max = 0;
  111.     i_maj_max = int(v[0]);
  112.     if ( int(v[1]) >= i_min_max ) i_min_max = int(v[1]);
  113.   }
  114.  }
  115.  if ( i_maj_max ) set_kb_item(name:"SymantecNortonAntiVirus/Corporate/Version", value:string(i_maj_max, ".", i_min_max));
  116.  
  117.  security_note(port:port, data:"The remote host has Symantec Norton Antivirus Coporate Edition version " + string(i_maj_max, ".", i_min_max) + " installed");
  118.  exit(0);
  119. }
  120.  
  121.  
  122.  
  123. # "Regular" edition
  124. key = "SOFTWARE\Symantec\Norton AntiVirus";
  125. item = "version";
  126. key_h = registry_get_key(soc:soc, uid:uid, tid:tid, pipe:pipe, key:key, reply:handle);
  127. if ( key_h )
  128. {
  129. value = registry_get_item_sz(soc:soc, uid:uid, tid:tid, pipe:pipe, item:item, reply:key_h);
  130. registry_close(soc:soc, uid:uid, tid:tid, pipe:pipe, reply:key_h);
  131. if ( value ){
  132.      version = registry_decode_sz(data:value);
  133.       set_kb_item(name:"SymantecNortonAntiVirus/Version", value:version);
  134.       security_note(port:port, data:"The remote host has Symantec Norton Antivirus version " + version + " installed");
  135.     }
  136. }
  137.